<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Object.create()   创建一个空对象({}),并指定对象的原型属性[[Prototype]]指向

    // 定义对象的属性,并给对象的属性添加修饰;  (构造函数Object的方法)
    // Object.defineProperty(target,key,desc)   定义对象的属性(单个)
    // target  目标对象
    // key     添加的键名(属性名 => 字符串)
    // desc    属性描述 ({})

    // Object.defineProperties(target,options)    定义对象的属性(多个)
    // target  目标对象
    // options 配置 {key:desc}  键名和属性描述组成的键值对

    // Object.getOwnPropertyDescriptor(target,key)  对应键名,获取属性描述
    // Object.getOwnPropertyDescriptors(target)     对应键名,获取对象的所有属性描述

    // Object.assign(target,source1,source2...sourceN) 对象合并 => 接收多个对象,合并到目标对象中
    // 返回值: 合并后的目标对象

    // var a = { a: 1 };
    // var b = { b: 2 };
    // var c = { c: 3 };

    // var obj = Object.assign(a, b, c);
    // console.log(obj);
    // console.log(a, b, c);
    // console.log(obj === a);


    // Object.is() 方法判断两个值是否为同一个值。(类似 ===)
    // Object.is() 方法判断两个值是否为同一个值，如果满足以下任意条件则两个值相等：
    // 都是 undefined
    // 都是 null
    // 都是 true 或都是 false
    // 都是相同长度、相同字符、按相同顺序排列的字符串
    // 都是相同对象（意味着都是同一个对象的值引用）
    // 都是数字且
    // 都是 +0
    // 都是 -0
    // 都是 NaN
    // 都是同一个值，非零且都不是 NaN

    // console.log(Object.is(undefined, undefined));
    // console.log(Object.is(null, null));
    // console.log(Object.is(true, true));
    // console.log(Object.is("hello", "hello"));
    // console.log(Object.is("hello", new String("hello")));  // false
    // console.log(Object.is([], [])); // false
    // console.log(Object.is(NaN, NaN));


    // Object.keys()  方法会返回一个由一个给定对象的自身可枚举属性组成的数组，数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致。 (返回一个属性名(可枚举的)的数组)
    // Object.values()   (返回一个属性值(可枚举的)的数组)

    var obj = { name: "张三", age: 18, sex: "男", height: "180cm", weight: "100kg" };

    var keyList = Object.keys(obj);
    console.log(keyList);
    var valueList = Object.values(obj);
    console.log(valueList);
    var entriesList = Object.entries(obj);
    console.log(entriesList);


</script>

</html>